struct ColoredNoShadingVSInput
{
	float4 Position : POSITION;
	float4 Color : COLOR0;
};

struct ColoredNoShadingVSOutput
{
	float4 Position : POSITION;
	float4 Color : COLOR0;
};

struct ColoredNoShadingPSInput
{
	float4 Position : POSITION;
	float4 Color : COLOR0;
};


//Colored, Shaded
struct ColoredShadedVSInput
{
	float4 Position : POSITION;
	float3 Normal : NORMAL0;
};

struct ColoredShadedVSOutput
{
	float4 Position : POSITION;
	float3 Normal : TEXCOORD0;
	float3 WorldPosition : TEXCOORD1;
};

struct ColoredShadedPSInput
{
	float3 Normal : TEXCOORD0;
	float3 WorldPosition : TEXCOORD1;
};

// TexturedShaded,Shaded

struct TexturedVSInput
{
	float4 Position : POSITION;
	float3 Normal : NORMAL0;
	float2 TextureCoords : TEXCOORD0;
};

struct TexturedVSOutput
{
	float4 Position : POSITION;
	float2 TextureCoords : TEXCOORD0;
	float3 Normal : TEXCOORD1;
	float3 WorldPosition : TEXCOORD2;
};

struct TexturedPSInput
{
	float2 TextureCoords : TEXCOORD0;
	float3 Normal : TEXCOORD1;
	float3 WorldPosition : TEXCOORD2;
};

//Skinned
struct SkinnedVSInput
{
	float4 Position : POSITION;
	float3 Normal : NORMAL0;
	float2 TextureCoords : TEXCOORD0;
	int4 BoneIndices : BLENDINDICES0;
	float4 BoneWeights : BLENDWEIGHT0;
};

struct SkinnedVSOutput
{
	float4 Position : POSITION;
	float2 TextureCoords : TEXCOORD0;
	float3 WorldPosition : TEXCOORD1;
	float3 Normal : TEXCOORD2;
};

struct SkinnedPSInput
{
	float2 TextureCoords : TEXCOORD0;
	float3 WorldPosition : TEXCOORD1;
	float3 Normal : TEXCOORD2;
};

//Shadow Map
struct ShadowMapVSOutput
{
	float4 Position : POSITION;
	float4 Position2D : TEXCOORD0;
};

struct SkinnedShadowMapVSInput
{
	float4 Position : POSITION;
	int4 BoneIndices : BLENDINDICES0;
	float4 BoneWeights : BLENDWEIGHT0;
};

struct SkinnedShadowMapVSOutput
{
	float4 Position : POSITION;
	float4 Position2D : TEXCOORD0;
};

// Draw with shadows, textured

struct TexturedWithShadowsVSInput
{
	float4 Position : POSITION;
	float3 Normal : NORMAL0;
	float2 TextureCoordinates : TEXCOORD0;
};

struct TexturedWithShadowsVSOutput
{
	float4 Position : POSITION;
	float2 TextureCoordinates : TEXCOORD0;
	float3 Normal : TEXCOORD1;
	float4 PositionAsSeenByLight : TEXCOORD2;
	float4 WorldPosition : TEXCOORD3;
};

struct TexturedWithShadowsPSInput
{
	float2 TextureCoordinates : TEXCOORD0;
	float3 Normal : TEXCOORD1;
	float4 PositionAsSeenByLight : TEXCOORD2;
	float4 WorldPosition : TEXCOORD3;
};